//
//  AFNetworkingTool.h
//  AFNetworkingTool
//
//  Created by 张国梁 on 15/11/4.
//  Copyright © 2015年 CoderGL. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "AFNetworking.h"
@interface AFNetworkingTool : NSObject

/**
 *  监测网络状态
 *
 *  @param NotReachable     没有网络
 *  @param ReachableViaWWAN 手机网络
 *  @param ReachableViaWiFi WIFI网络
 */
+ (void)netWorkingStatusNotReachable:(nullable void(^)())NotReachable ReachableViaWWAN:(nullable void(^)())ReachableViaWWAN ReachableViaWiFi:(nullable void(^)())ReachableViaWiFi;


/**
 *  发送一个get网络请求
 *
 *  @param url     请求路径URL
 *  @param params  请求参数
 *  @param success 成功调用的代码
 *  @param failure 失败调用的代码
 */
+ (void)getWithUrl:(nullable NSString *)url params:(nullable id)params success:(nullable void(^)(NSURLSessionDataTask * __nullable task, NSDictionary *__nullable responseObject))success failure:(nullable void(^)(NSURLSessionDataTask * __nullable task, NSError *__nullable error))failure;


/**
 *  发送一个post网络请求
 *
 *  @param url     请求路径URL
 *  @param params  请求参数
 *  @param success 成功调用的代码
 *  @param failure 失败调用的代码
 */
+ (void)postWithUrl:(nullable NSString *)url params:(nullable id)params success:(nullable void(^)(NSURLSessionDataTask * __nullable task, NSDictionary *__nullable responseObject))success failure:(nullable void(^)(NSURLSessionDataTask * __nullable task, NSError * __nullable error))failure;

/**
 *  文件下载
 *
 *  @param urlStr  请求路径URL
 *  @param success 成功调用的代码
 *  @param failure 失败调用的代码
 */
+ (void)downloadWithUrl:(nullable NSString *)urlStr success:(nullable void (^)(NSURL *__nullable targetPath, NSURLResponse *__nullable response))success failure:(nullable void (^)(NSURLResponse *__nullable response, NSURL *__nullable filePath, NSError *__nullable error))failure;


/**
 *  文件上传
 *
 *  @param url      上传接口URL
 *  @param params   非文件参数
 *  @param fileData 文件二进制数据
 *  @param name     文件参数名称
 *  @param mimeTpye 文件类型
 *  @param success  成功掉用的代码
 *  @param failure  失败掉用的代码
 */
+ (void)postUploadWithUrl:(nullable NSString *)url params:(nullable id)params fileData:(nullable NSData *)fileData name:(nullable NSString *)name mimeType:(nullable NSString *)mimeTpye success:(nullable void(^)(id __nullable responseObject))success failure:(nullable void(^)(NSError *__nullable error))failure;

@end
